home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / longint.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  5KB  |  194 lines

  1.  
  2.  
  3. /*  Copyright (c) 1993-1996 Algorithms Corporation  */
  4. /*  All rights reserved.  */
  5.  
  6.  
  7.  
  8.  
  9. /*  This file automatically generated by dpp - do not edit  */
  10.  
  11. #define    DPP_STRATEGY    2
  12. #define    DPP_FASTWIDE    0
  13.  
  14.  
  15.  
  16. #line 15 "longint.d"
  17. #include <math.h> 
  18.  
  19. #define    CLASS    LongInteger_c
  20. #define    ivType    LongInteger_iv_t
  21.  
  22. #include "generics.h"
  23.  
  24. object    LongInteger_c;
  25.  
  26.  
  27. #line 28 "longint.c"
  28. typedef struct  _LongInteger_iv_t  {
  29.     long iVal;
  30. }    LongInteger_iv_t;
  31.  
  32.  
  33.  
  34. #line 22 "longint.d"
  35. cmeth objrtn LongInteger_cm_gNewWithLong(object self, long val)
  36.     object obj = oSuper(LongInteger_c, gNew, self)(self); 
  37.     ivType *iv = ivPtr(obj); 
  38.     iv->iVal = val; 
  39.     return(obj); 
  40.  
  41. imeth int LongInteger_im_gHash(object self)
  42. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  43.     double t; 
  44.  
  45.     t = .6125423371 * (unsigned long) iv->iVal; 
  46.     t = t < 0.0 ? -t : t; 
  47.     return (int) (BIG_INT * (t - floor(t))); 
  48.  
  49. imeth int LongInteger_im_gCompare(object self, object obj)
  50. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  51.     long sv, ov; 
  52.  
  53.     ChkArg(obj, 2); 
  54.     if (ClassOf(obj) != CLASS && ClassOf(obj) != Date) 
  55.         return oSuper(LongInteger_c, gCompare, self)(self, obj); 
  56.     if ((sv=iv->iVal) < (ov=ivPtr(obj)->iVal)) 
  57.         return -1; 
  58.     else if (sv == ov) 
  59.         return 0; 
  60.     else 
  61.         return 1; 
  62.  
  63. imeth objrtn LongInteger_im_gStringRepValue(object self)
  64. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  65.     return vSprintf(String, "%ld", iv->iVal); 
  66.  
  67. imeth char LongInteger_im_gCharValue(object self)
  68. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  69.     return (char) iv->iVal; 
  70.  
  71. imeth short LongInteger_im_gShortValue(object self)
  72. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  73.     return (short) iv->iVal; 
  74.  
  75. imeth unsigned short LongInteger_im_gUnsignedShortValue(object self)
  76. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  77.     return (unsigned short) iv->iVal; 
  78.  
  79. imeth long LongInteger_im_gLongValue(object self)
  80. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  81.     return (long) iv->iVal; 
  82.  
  83. imeth double LongInteger_im_gDoubleValue(object self)
  84. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  85.     return (double) iv->iVal; 
  86.  
  87. imeth void * LongInteger_im_gPointerValue(object self)
  88. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  89.     return (void *) &iv->iVal; 
  90.  
  91. imeth objrtn LongInteger_im_gChangeValue(object self, object val)
  92. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  93.     ChkArg(val, 2); 
  94.     iv->iVal = gLongValue(val); 
  95.     return self; 
  96.  
  97. imeth objrtn LongInteger_im_gChangeCharValue(object self, int val)
  98. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  99.     iv->iVal = (long) val; 
  100.     return self; 
  101.  
  102. imeth objrtn LongInteger_im_gChangeShortValue(object self, int val)
  103. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  104.     iv->iVal = (long) val; 
  105.     return self; 
  106.  
  107. imeth objrtn LongInteger_im_gChangeUShortValue(object self, unsigned val)
  108. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  109.     iv->iVal = (long) val; 
  110.     return self; 
  111.  
  112. imeth objrtn LongInteger_im_gChangeLongValue(object self, long val)
  113. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  114.     iv->iVal = (long) val; 
  115.     return self; 
  116.  
  117. imeth objrtn LongInteger_im_gChangeDoubleValue(object self, double val)
  118. { LongInteger_iv_t *iv = GetIVs(LongInteger, self);
  119.     iv->iVal = (long) val; 
  120.     return self; 
  121.  
  122.  
  123. #line 141 "longint.c"
  124.  
  125. objrtn    LongInteger_initialize(void)
  126. {
  127.     static  CRITICALSECTION  cs;
  128.     static  int volatile once = 0;
  129.  
  130.     ENTERCRITICALSECTION(_CI_CS_);
  131.     if (!once) {
  132.         INITIALIZECRITICALSECTION(cs);
  133.         once = 1;
  134.     }
  135.     LEAVECRITICALSECTION(_CI_CS_);
  136.  
  137.     ENTERCRITICALSECTION(cs);
  138.  
  139.     if (LongInteger_c) {
  140.         LEAVECRITICALSECTION(cs);
  141.         return LongInteger_c;
  142.     }
  143.     INHIBIT_THREADER;
  144.     Number_initialize();
  145.     if (LongInteger_c)  {
  146.         ENABLE_THREADER;
  147.         LEAVECRITICALSECTION(cs);
  148.         return LongInteger_c;
  149.     }
  150.     LongInteger_c = gNewClass(Class, "LongInteger", sizeof(LongInteger_iv_t), 0, Number, END);
  151.     cMethodFor(LongInteger, gNewWithLong, LongInteger_cm_gNewWithLong);
  152.     iMethodFor(LongInteger, gUnsignedShortValue, LongInteger_im_gUnsignedShortValue);
  153.     iMethodFor(LongInteger, gChangeDoubleValue, LongInteger_im_gChangeDoubleValue);
  154.     iMethodFor(LongInteger, gDoubleValue, LongInteger_im_gDoubleValue);
  155.     iMethodFor(LongInteger, gCompare, LongInteger_im_gCompare);
  156.     iMethodFor(LongInteger, gChangeLongValue, LongInteger_im_gChangeLongValue);
  157.     iMethodFor(LongInteger, gChangeShortValue, LongInteger_im_gChangeShortValue);
  158.     iMethodFor(LongInteger, gShortValue, LongInteger_im_gShortValue);
  159.     iMethodFor(LongInteger, gPointerValue, LongInteger_im_gPointerValue);
  160.     iMethodFor(LongInteger, gCharValue, LongInteger_im_gCharValue);
  161.     iMethodFor(LongInteger, gStringRepValue, LongInteger_im_gStringRepValue);
  162.     iMethodFor(LongInteger, gChangeUShortValue, LongInteger_im_gChangeUShortValue);
  163.     iMethodFor(LongInteger, gHash, LongInteger_im_gHash);
  164.     iMethodFor(LongInteger, gChangeValue, LongInteger_im_gChangeValue);
  165.     iMethodFor(LongInteger, gLongValue, LongInteger_im_gLongValue);
  166.     iMethodFor(LongInteger, gChangeCharValue, LongInteger_im_gChangeCharValue);
  167.  
  168.     ENABLE_THREADER;
  169.  
  170.     LEAVECRITICALSECTION(cs);
  171.  
  172.     return LongInteger_c;
  173. }
  174.  
  175.  
  176.  
  177.